package com.javasm.springmybatis.async;

import com.javasm.springmybatis.common.util.SpringContainerUtils;
import org.apache.ibatis.jdbc.Null;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

/**
 * @Author：xieyunfan
 * @Version：1.0
 * @Date：2021/12/30-11:38
 * @Since:jdk1.8
 * @Description:
 */
//这种封装 就是外面用asyncManager的壳子  实际里面跑的是封装的对象
public class AsyncManager {

    //这个就是需要管理的对象 对象当一个属性
    private static ThreadPoolTaskExecutor threadPoolTaskExecutor=null;

    //控制对象的数量，提前定义号对象
    private static  AsyncManager asyncManager=null;

    //什么时候用私有的构造方法
    private AsyncManager() {

        threadPoolTaskExecutor=SpringContainerUtils.getBean(ThreadPoolTaskExecutor.class);

        //可以查查看下当前的线程池
        int corePoolSize = threadPoolTaskExecutor.getCorePoolSize();
        System.out.println(corePoolSize);
    }

    public static AsyncManager getInstance()
    {
        //我觉得直接在属性上面新建对象也是可以的  一个意思
        if (null==asyncManager)
        {
            asyncManager=new AsyncManager();
        }
        return asyncManager;
    }

    //就是方法
    public void execute(Runnable runnable)
    {
        threadPoolTaskExecutor.execute(runnable);
    }

}
